package org.agile4j.patterns.command.callbacke;

/**
 * 可以理解为提供一种服务
 * 
 * @author user
 *
 */
public class Invoker {

	public void startPrinet(Command cmd) {
		getConnection();
		// 执行命令功能
		cmd.execute(); // 【i call you back】
		releaseConnection();
	}

	public void getConnection() {
		System.out.println("在Invoker中, 输出服务前");
	}

	public void releaseConnection() {
		System.out.println("输出结束");
	}

	public void println() {
		// 准备发出的命令, 没有具体实现类
		Command cmd = new Command() {

			private String str = "";

			@Override
			public void execute() { // // 【you call me】
				System.out.println("要输出的内容:" + str);
			}

			@Override
			public void setStr(String s) {
				str = s;
			}

		};

		cmd.setStr("退化的命令模式,类似于JAVA回调的事例.");

		startPrinet(cmd);
	}
}
